1 . Computer Language Advances

نویسندگان

  • Daniel E. Cooke
  • Michael Gelfond
  • Joseph E. Urban
چکیده

ion. An abstraction is commonly viewed as the act of taking away – the formation of an idea apart from the concrete existence or specification thereof. A computer abstraction can be viewed as the result of dropping out nonessential, complicating details. An abstraction defines that which is salient to the problem solution, and in doing so, identifies the extraneous details that can be ignored in previous abstractions. The original model of computing required the physical rewiring of the CPU to alter the CPU's actions. A revolution in abstraction came with the advent of the stored program concept, also known as the Von Neumann architecture. The Von Neumann approach dropped out the original distinction between the storage of data and the storage of a program. Assembler languages quickly followed. These languages dropped out many nonessential details including the need to keep track of physical addresses. Macro definitions for oft-repeated functions such as input-output improved the assembler abstraction by removing many nonessential details from the programmer’s concern. In the case of input-output on the IBM 360/370, the details hidden are those involved in executing channel programs. The GET and PUT macros essentially hide a surfeit of nonessential details: without these macros the programmer has to write programs that run on the I/O channel processors together with the mainframe program code required to initiate the I/O transfers. FORTRAN was a major step in abstraction improvement because it provided a view of problem solving where one ignored many machine level details such as register usage and memory management. FORTRAN's abstraction moves the programmer away from machine operations pointing the programmer towards algebraic operations. Languages like Algol and Pascal improved the FORTRAN abstraction in a significant way through the addition of prominent control structures and by placing data structure design on a level equal to algorithm design. In other words, with the newer abstractions the design of the data structure comes to be viewed as a critical element in problem solving. To illustrate the significance of the data structure, imagine trying to convert an arbitrary postfix expression into an equivalent prefix expression without the use of an advanced data structure. The Pascal abstraction eventually led to the view that the programmer's product is a data product rather than a program that produces that data product. The object-oriented approach to programming is less of an abstraction change in that this approach adds, rather than deletes technical detail. From an historical viewpoint one might view the relationship between the procedural and object-oriented approaches as analogous to the relationship between the assembler and the macro-assembler languages. In other words, the following analogy may indeed be an appropriate one to consider: macroassembly : assembly :: object-oriented : procedural. The object-oriented approach was motivated by the fact that procedural languages lacked a "middle ground" between local and global variables. The lack of this middle ground led to technical difficulties in the implementation and reusability of data structures. The difficulty was addressed by Parnas's definitions of information hiding (a form of hiding variables beyond the hiding afforded by local variables). [4] These problems were solved with the addition of features to encapsulate data structures. Once one encapsulates data structures, it is a logical step to encapsulate program structures. Reuse of the so-called objects is facilitated through an inheritance mechanism. Object-oriented programming is a natural, evolutionary step that adds features to the procedural language abstraction in order to solve technical problems that arise in the use and reuse of data and program structures. Other changes to the procedural abstraction have been made in order to accommodate concurrent programming. Languages like Ada, Modula, and Linda have added some notion of multitasking in a manner that interacts with existent program structures for procedures and functions. Java is considered by many to be the best designed object-oriented language. Java possesses an environment that provides one with the ability to develop graphical user interfaces, applets for web-based programming, concurrent processes, etc. As such, Java embodies a superset of the significant extensions and modifications that characterize the evolution of the procedural languages. Apart from the evolution of procedural programming, completely new ways to view problem solving have arisen from work in functional [5], logic [6], and collection-oriented languages [7,8]. These improvements have sought to change the view of programming altogether. They can be viewed more as revolutionary changes as opposed to the more characteristic evolutionary changes described above. A programming language provides the fundamental level of abstraction for problem solving with a computer. It demarcates the point where the human leaves off and the architecture takes over, in the process of translating the problem solution into a set of actions to be performed by the computer. Language compilers or interpreters perform all further translation for us. The fundamental level of abstraction is very important. It defines the basis for the way we organize our activities to solve problems, i.e., it is the basis for the software process model. What constitutes a computer language theory? As a theory for problem solving, a computer language should satisfy certain objective requirements. The requirements are important to know, because they form an important measure of the significance of a language as a theory. Before a community is willing to design and perform experiments related to a theory, the theory should satisfy requirements, which indicate that the experiments are warranted and worthwhile. In this section requirements that a computer language should satisfy are presented. One requirement of a computer language is that it be unambiguous. To satisfy this requirement there must be a mathematical definition of the syntax and semantics of the language. The syntax of a language provides a precise definition of the rules employed in order to construct grammatically correct (i.e., valid) sentences in the language. Backus-Naur Form is commonly used for simple syntax definitions. More complex syntactic features are frequently captured by attribute grammar, another form used in syntax definition. Attribute grammars permit the description of semantic constraints such as data typing constraints. The semantics of a computer language should provide a precise definition of the meaning of a sentence stated in the language. Semantics can be stated using the denotational, axiomatic, or operational approaches, or through the use of other formal languages. The Backus-Naur Form allows for the construction of a finite set of rules that define how any element of the infinite set is constructed. For example, the following finite set of recursive rules define an infinite set of elements: T ::= zero | succ(T) These rules define a set of syntactic objects, which belong to the language: T = {zero, succ(zero), succ(succ(zero)),...} Now consider the set of natural numbers:

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Terminology of Combining the Sentences of Farsi Language with the Viterbi Algorithm and BI-GRAM Labeling

This paper, based on the Viterbi algorithm, selects the most likely combination of different wording from a variety of scenarios. In this regard, the Bi-gram and Unigram tags of each word, based on the letters forming the words, as well as the bigram and unigram labels After the breakdown into the composition or moment of transition from the decomposition to the combination obtained from th...

متن کامل

Transforming Fuzzy State Diagram to Fuzzy Petri net

UML is known as one of the most common methods in software engineering. Since this language is semi-formal, many researches and efforts have been performed to transform this language into formal methods including Petri nets. Thus, the operation of verification and validation of the qualitative and nonfunctional parameters could be achieved with more ability. Since the majority of the real world...

متن کامل

Transforming Fuzzy State Diagram to Fuzzy Petri net

UML is known as one of the most common methods in software engineering. Since this language is semi-formal, many researches and efforts have been performed to transform this language into formal methods including Petri nets. Thus, the operation of verification and validation of the qualitative and nonfunctional parameters could be achieved with more ability. Since the majority of the real world...

متن کامل

An Executive Approach Based On the Production of Fuzzy Ontology Using the Semantic Web Rule Language Method (SWRL)

Today, the need to deal with ambiguous information in semantic web languages is increasing. Ontology is an important part of the W3C standards for the semantic web, used to define a conceptual standard vocabulary for the exchange of data between systems, the provision of reusable databases, and the facilitation of collaboration across multiple systems. However, classical ontology is not enough ...

متن کامل

Modeling and Evaluation of Stochastic Discrete-Event Systems with RayLang Formalism

In recent years, formal methods have been used as an important tool for performance evaluation and verification of a wide range of systems. In the view points of engineers and practitioners, however, there are still some major difficulties in using formal methods. In this paper, we introduce a new formal modeling language to fill the gaps between object-oriented programming languages (OOPLs) us...

متن کامل

Modeling and Evaluation of Stochastic Discrete-Event Systems with RayLang Formalism

In recent years, formal methods have been used as an important tool for performance evaluation and verification of a wide range of systems. In the view points of engineers and practitioners, however, there are still some major difficulties in using formal methods. In this paper, we introduce a new formal modeling language to fill the gaps between object-oriented programming languages (OOPLs) us...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2000